package 面试经典150题.字符串;

/**
 * @author tmh
 * @date 2024/5/26 19:25
 * @description
 */
public class T6Z字形变换 {
    /**
     * P   A   H   N
     * A P L S I I G
     * Y   I   R
     * @param s
     * @param numRows
     * @return
     */
    public String convert(String s, int numRows) {
        if (numRows == 1) {
            return s;
        }
        int len = Math.min(s.length(), numRows);
        int col = 0;
        String[] res = new String[len];
        //这里需要给每个字符串赋值初始值为空串
        for (int i = 0; i < len; i++) {
            res[i] = "";
        }
        boolean down = false;
        //1.这个res数组里面存储的就是每个横着的字符串
        for (int i = 0; i < s.length(); i++) {
            res[col] += s.substring(i, i + 1);
            if (col == 0 || col == numRows - 1) {
                //2.当col处于第一排或者是最后一排的时候就需要变向
                down = !down;
            }
            //3.通过col来一次添加该方向上面的字符串放在字符串数组对应的位置里面
            col += down ? 1 : -1;
        }
        String result = "";
        for (String re : res) {
            result += re;
        }
        return result;
    }
}
